package com.zjcloud.jwgl.mapper;

import java.util.List;
import java.util.Map;
import com.zjcloud.jwgl.domain.ScScheduleResult;

/**
 * 排课结果Mapper接口
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public interface AcademicJwglScScheduleResultMapper 
{
    /**
     * 查询排课结果
     * 
     * @param id 排课结果主键
     * @return 排课结果
     */
    public ScScheduleResult selectScScheduleResultById(Long id);

    /**
     * 查询排课结果列表
     * 
     * @param scScheduleResult 排课结果
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectScScheduleResultList(ScScheduleResult scScheduleResult);

    /**
     * 新增排课结果
     * 
     * @param scScheduleResult 排课结果
     * @return 结果
     */
    public int insertScScheduleResult(ScScheduleResult scScheduleResult);

    /**
     * 修改排课结果
     * 
     * @param scScheduleResult 排课结果
     * @return 结果
     */
    public int updateScScheduleResult(ScScheduleResult scScheduleResult);

    /**
     * 删除排课结果
     * 
     * @param id 排课结果主键
     * @return 结果
     */
    public int deleteScScheduleResultById(Long id);

    /**
     * 批量删除排课结果
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteScScheduleResultByIds(Long[] ids);

    /**
     * 根据批次号查询排课结果列表
     * 
     * @param batchNo 批次号
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsByBatchNo(String batchNo);

    /**
     * 根据学期ID查询排课结果列表
     * 
     * @param semesterId 学期ID
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsBySemesterId(Long semesterId);

    /**
     * 根据教师ID查询排课结果列表
     * 
     * @param teacherId 教师ID
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsByTeacherId(Long teacherId);

    /**
     * 根据教室ID查询排课结果列表
     * 
     * @param classroomId 教室ID
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsByClassroomId(Long classroomId);

    /**
     * 根据班级ID查询排课结果列表
     * 
     * @param classId 班级ID
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsByClassId(Long classId);

    /**
     * 根据课程ID查询排课结果列表
     * 
     * @param courseId 课程ID
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsByCourseId(Long courseId);

    /**
     * 检查排课冲突
     * 
     * @param scScheduleResult 排课结果
     * @return 冲突数量
     */
    public int checkScheduleConflict(ScScheduleResult scScheduleResult);

    /**
     * 获取排课统计数据
     * 
     * @param semesterId 学期ID
     * @param teacherId 教师ID
     * @param classroomId 教室ID
     * @return 统计数据
     */
    public Map<String, Object> getScheduleStatistics(Long semesterId, Long teacherId, Long classroomId);

    /**
     * 根据多条件查询排课结果列表
     * 
     * @param params 查询参数
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsByConditions(Map<String, Object> params);

    /**
     * 根据多条件删除排课结果
     * 
     * @param params 删除参数
     * @return 结果
     */
    public int deleteResultsByConditions(Map<String, Object> params);

    /**
     * 根据批次号删除排课结果
     * 
     * @param batchNo 批次号
     * @return 结果
     */
    public int deleteResultsByBatchNo(String batchNo);

    /**
     * 根据学期ID删除排课结果
     * 
     * @param semesterId 学期ID
     * @return 结果
     */
    public int deleteResultsBySemesterId(Long semesterId);

    /**
     * 根据任务ID查询排课结果列表
     * 
     * @param taskId 任务ID
     * @return 排课结果集合
     */
    public List<ScScheduleResult> selectResultsByTaskId(Long taskId);
}